<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../0js/vue.js"></script>
    <style>
        *{
            margin-top: 20px;
        }
        .demo1 {
            height: 50px;
            background-color: skyblue;
        }

        .box1 {
            padding: 5px;
            background-color: skyblue;
        }

        .box2 {
            padding: 5px;
            background-color: orange;
        }

        .list {
            width: 200px;
            height: 200px;
            background-color: peru;
            overflow: auto;
        }
        li {
            height: 100px;
        }
    </style>
</head>
<body>

<div id="root">
    <!-- 事件修饰符
        常用：
            .prevent 阻止默认行为
            .stop 阻止事件冒泡
            .once 事件只出发一次

        不常用：
            .capture 使用事件捕获模式
            .self 只有event.target是当前操作的元素时是才触发事件
            .passive 事件的默认行为立即执行，无需等待事件回调执行完毕
    -->
    <a href="http://www.chengheng.com" @click.prevent="showInfo">点我提示信息</a>

    <!--阻止事件冒泡 @click.stop.prevent @click.prevent.stop -->
    <div class="demo1" @click="showInfo">
        <button @click.stop.prevent="showInfo">阻止事件冒泡</button>
    </div>

    <!--事件只触发一次-->
    <button @click.once="showInfo">事件只触发一次</button>

    <!--使用事件捕获模式-->
    <div class="box1" @click.capture="showMsg('div1')">
        div1
        <div class="box2" @click="showMsg('div2')">
            div2
        </div>
    </div>

    <!--只有event.target是当前操作的元素时是才触发事件-->
    <div class="demo1" @click.self="showInfo">
        <button @click="showInfo">只有event.target是当前操作的元素时是才触发事件</button>
    </div>

    <!--事件的默认行为立即执行，无需等待事件回调执行完毕-->
    <ul @scroll.passive="demo" @wheel.passive="demo" class="list">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </ul>
</div>

<script type="text/javascript">
    // 阻止vue在启动时生成生产提示
    Vue.config.productionTip = false

    const vm = new Vue({
        el:"#root",
        data: {
            name: "vue"
        },
        methods: {
            showInfo(event) {
                // event.preventDefault()
                //event.stopPropagation()
                alert("事件冒泡")
                // console.log(event.target)
            },
            showMsg(msg) {
                console.log(msg)
            },
            demo() {
                for (let i = 0; i < 1000; i++) {
                    console.log("@")
                }
                console.log("循环结束")
            }
        }
    });

</script>
</body>
</html>